import axios from 'axios';
import type { AxiosResponse } from 'axios';

// 题目生成请求参数类型
export interface GenerateQuestionsRequest {
  core_words?: string;
  question_type?: string;
  count?: number;
  difficulty?: string;
  file_path?: string;
}

/**
 * 生成题目
 * @param data 题目生成请求参数
 * @param isFile 是否使用文件上传
 * @returns 生成的题目文本
 */
export async function generateQuestions(
  data: GenerateQuestionsRequest | FormData, 
  isFile: boolean = false
): Promise<string> {
  try {
    let response: AxiosResponse;
    
    if (isFile && data instanceof FormData) {
      // 文件上传方式
      response = await axios.post('/api/generate-questions', data, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      });
    } else if (!isFile) {
      // 普通JSON方式
      response = await axios.post('/api/generate-questions', data);
    } else {
      throw new Error('无效的请求参数');
    }
    
    if (response.data && response.data.response) {
      return response.data.response;
    } else {
      throw new Error('无效的响应格式');
    }
  } catch (error) {
    console.error('题目生成失败:', error);
    if (axios.isAxiosError(error)) {
      throw new Error(error.response?.data?.detail || error.message);
    } else {
      throw new Error('题目生成失败');
    }
  }
}
